package com.social.pojo;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.social.pojo.dto.UserDTO;
import com.social.utils.UserHolder;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;


import javax.validation.constraints.*;
import java.io.Serializable;
import java.time.LocalDateTime;


/**
 * @Author: XiaoXu
 * @Description: 投诉信息实体类
 * @Date: Created in 13:03 2022/9/29
 * @Modified By:
 * @Version: 1.0
 */

@Data
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
@TableName("complaint")
@ApiModel("投诉信息类")
public class Complaint implements Serializable {
    /**
        * 主键id,表示此投诉编号
    */
    @ApiModelProperty("投诉信息id")
    @TableId(value = "id", type = IdType.AUTO)
    private Long id;

    /**
        * 投诉用户id编号
    */
    @ApiModelProperty("投诉用户id编号")
    private Long userId;

    /**
        * 投诉目标
    */
    @ApiModelProperty("是否公开；0是不公开，1是公开")
    private Integer isPublic;

    /**
        * 投诉类型
    */
    @ApiModelProperty("投诉类型")
    @NotBlank(message = "投诉类型不能为空")
    private String category;

    /**
        * 投诉时间
    */
    @ApiModelProperty("投诉时间")
    private LocalDateTime time;

    /**
        * 此投诉信息状态
        * 0表示未受理
        * 1表示已接受
        * 2表示撤回...
    */
    @ApiModelProperty("投诉状态：0未受理，1已受理，2已撤回")
//    @Max(value = 2,message = "投诉类型状态错误")
//    @Min(value = 0,message = "投诉类型状态错误")
//    @NotNull(message = "投诉类型状态不能为空")
    private Integer state;

    /**
        * 投诉信息标题
    */
    @ApiModelProperty("投诉信息标题")
    @NotBlank(message = "投诉标题不能为空")
    private String title;

    /**
        * 投诉内容
    */
    @ApiModelProperty("投诉内容")
    @NotBlank(message = "投诉内容不能为空" ,groups = {ValidationGroup1.class})
    @Size(max = 2000,message = "投诉内容长度过长")
    private String content;

    /**
        * 投诉文件名
    */
    @ApiModelProperty("投诉文件名")
    private String fileName;

    @TableField(exist = false)
    private UserDTO user;

    public interface ValidationGroup1 {
    }
}
